#ifndef _HTML_WRITER_H_
#define _HTML_WRITER_H_

#include <fstream>
#include <string>

using namespace std;

class HTMLWriter {

	public:
		/** inicializa el documento */
		void startDoc();

		/** finaliza el HTML y cierra el archivo. */
		void endDoc();

		/** escibe una keyword */
		void writeKW(string kw);

		/** escibe un identificador */
		void writeID(string id);

		/** escibe un literal */
		void writeLIT(string lit);

		/** escibe un separador */
		void writeSEP(string sep);

		/** escibe un operador */
		void writeOP(string op);

		/** inicia una declaración con determinado tipo de datos. */
		void declarationStart(string type);

		/** agrega un identificador a la declaración que se está construyendo. */
		void declarationAdd(string identifier);

		/** cierra una declaración o sentencia (agrega el ";" final y el newline)*/
		void sentenceEnd();

		/** abre un nuevo bloque de código */
		void openCB();

		/** abre un nuevo bloque de código */
		void closeCB();

		/** setea el nombre del archivo de salida */
		void setOutput(string file_name);
		/** setea la hoja de estilos a utilizar */
		void setStylesheet(string stylesheet_name);

	private:
		ofstream file;
		string css;
		void writeSpan(string cl, string content);

};

#endif